package com.zkh.myutils.io.excel.data;

import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;

import com.zkh.myutils.utils.Utils;

/**
 * sheet数据对象
 * @author zkh
 */
public class SheetData {
	//列数
	private int cols;
	//数据容器
	private List<RowData> dataList = new ArrayList<>();
	
	/**
	 * 遍历数据，自定义处理方式
	 * @param consumer 自定义处理逻辑
	 */
	public void eachRow(BiConsumer<RowData, Integer> consumer) {
		//遍历行数据
		for(int i=0; i<dataList.size(); i++) {
			consumer.accept(dataList.get(i), i);
		}
	}
	/**
	 * 获取行数
	 * @return 行数
	 */
	public int getRows() {
		return dataList.size();
	}
	/**
	 * 获取列数
	 * @return 列数
	 */
	public int getCols() {
		return cols;
	}
	public void setCols(int cols) {
		this.cols = cols;
	}
	/**
	 * 获取指定行数据
	 * @param rowIndex 指定行索引
	 * @return 行对象
	 */
	public RowData getRowData(int rowIndex) {
		return dataList.get(rowIndex);
	}
	/**
	 * 添加一行数据
	 * @param cellDataList 单元格对象列表
	 */
	public void putRowData(List<CellData> cellDataList) {
		dataList.add(new RowData(cellDataList, this));
	}
	
	/**
	 * 添加一行空数据
	 */
	public void putEmptyRow() {
		dataList.add(new RowData(this));
	}

	@Override
	public String toString() {
		//组装结果
		StringBuilder sb = new StringBuilder("SheetData => rows=" + dataList.size() + ", cols=" + cols + ", dataList：\r\n");
		//遍历
		dataList.forEach(e->{
			sb.append("\t").append(Utils.join(", ", e)).append("\r\n");
		});
		//返回
		return sb.toString();
	}
}
